#include<bits/stdc++.h>
#define ___ "-------------------------------\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll maxn = 100000 + 5;

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int a = 0, b = 0;
        for (int num : nums) {
            tie(a, b) = pair{((~a) & b & num) | (a & (~b) & (~num)), (~a) & (b ^ num)};
        }
        return b;
    }
};


int main(){
//    ios::sync_with_stdio(false);
//    ifstream cin("data.txt");
//    freopen("data.txt", "r", stdin);
    return 0;
}

/**
 * @date 2022-09-14
 * @brief 考虑答案二进制的每一位，用数字电路的思想，用两个数字 a b 的当前位来表示这个答案当前位
 * （两个数字是因为其他数字有 3 个，也就是状态图要跳 3 次让他回去），然后列真值表，求 a 和 b 的表达式
 * 然后将 b 作为答案就行了因为 a 是高位 0 
 */